Remove (more or less) magic numbers. Use pre-defined macros for speed calculation.
authoroliskoli <oliskoli>
Wed, 18 Jul 2007 19:05:32 +0000 (19:05 +0000)
committeroliskoli <oliskoli>
Wed, 18 Jul 2007 19:05:32 +0000 (19:05 +0000)
garmin_txt.c
gpssim.c
nmea.c
reference/track/tracks.gpssim
vitosmt.c

index 767bfb61497f5ecafab97780512e89bfed7d8405..97f7716c91a8d19b4ebbb7960fd2612bf9722a78 100644 (file)
@@ -496,7 +496,7 @@ print_speed(double *distance, time_t *time)
        idist = si_round(dist);
        
        if ((*time != 0) && (idist > 0)) {
-               double speed = dist / (double)*time * SECONDS_PER_HOUR / 1000;
+               double speed = MPS_TO_KPH(dist / (double)*time);
                int ispeed = si_round(speed);
                
                if (speed < (double)0.01)
index 067d41bd41b2fdef8bbfbbf3fc1d4f70980835c0..024cd47e1849c26d9fde78497a40bcee556c1a5b 100644 (file)
--- a/gpssim.c
+++ b/gpssim.c
@@ -96,8 +96,6 @@ gpssim_write_spd(double knotsperhour)
        gpssim_write_sentence(obuf);
 }
 
-#define mpsec2knots(n) ((n) * 1.9438445 / 0.51444444)
-
 static void
 gpssim_write_pt(const waypoint *wpt)
 {
@@ -105,7 +103,7 @@ gpssim_write_pt(const waypoint *wpt)
        double lat, lon;
 
        if WAYPT_HAS(wpt, speed) {
-               gpssim_write_spd(mpsec2knots(wpt->speed));
+               gpssim_write_spd(MPS_TO_KNOTS(wpt->speed));
        }
 
        lat = degrees2ddmm(wpt->latitude);
diff --git a/nmea.c b/nmea.c
index 810c3767ac93b2d62b2295d9931ffde2c45dd625..ee6878052dc854fffd7596a8f37275bd3beac8d0 100644 (file)
--- a/nmea.c
+++ b/nmea.c
@@ -163,9 +163,6 @@ static struct tm opt_tm;    /* converted "date" parameter */
 
 #define MYNAME "nmea"
 
-static const double kts2mps =0.51444444444444444; /* knots to m/s */
-static const double kmh2mps =0.27777777777777778; /* km/h to m/s  */ 
-
 static char *opt_gprmc;
 static char *opt_gpgga;
 static char *opt_gpvtg;
@@ -517,7 +514,7 @@ gprmc_parse(char *ibuf)
                /* capture useful data update and exit */
                if (curr_waypt) {
                        if (! WAYPT_HAS(curr_waypt, speed))
-                               WAYPT_SET(curr_waypt, speed, speed*kts2mps);
+                               WAYPT_SET(curr_waypt, speed, KNOTS_TO_MPS(speed));
                        if (! WAYPT_HAS(curr_waypt, course))
                                WAYPT_SET(curr_waypt, course, course);
                        /* The change of date wasn't recorded when 
@@ -529,7 +526,7 @@ gprmc_parse(char *ibuf)
                
        waypt  = waypt_new();
 
-       WAYPT_SET(waypt, speed, speed*kts2mps);
+       WAYPT_SET(waypt, speed, KNOTS_TO_MPS(speed));
 
        WAYPT_SET(waypt, course, course);
        
@@ -658,9 +655,9 @@ gpvtg_parse(char *ibuf)
                WAYPT_SET(curr_waypt, course, course);
                
                if (speed_k>0)
-                       WAYPT_SET(curr_waypt, speed, speed_k*kmh2mps)
+                       WAYPT_SET(curr_waypt, speed, KPH_TO_MPS(speed_k))
                else
-                       WAYPT_SET(curr_waypt, speed, speed_n*kts2mps);
+                       WAYPT_SET(curr_waypt, speed, KNOTS_TO_MPS(speed_n));
 
        }       
        
@@ -1206,7 +1203,7 @@ nmea_trackpt_pr(const waypoint *wpt)
                                fix=='0' ? 'V' : 'A',
                                fabs(lat), lat < 0 ? 'S' : 'N',
                                fabs(lon), lon < 0 ? 'W' : 'E',
-                               WAYPT_HAS(wpt, speed) ? (wpt->speed / kts2mps):(0),
+                               WAYPT_HAS(wpt, speed) ? MPS_TO_KNOTS(wpt->speed):(0),
                                WAYPT_HAS(wpt, course) ? (wpt->course):(0),
                                (int) ymd);
                cksum = nmea_cksum(obuf);
@@ -1227,8 +1224,8 @@ nmea_trackpt_pr(const waypoint *wpt)
        if ((opt_gpvtg) && (WAYPT_HAS(wpt, course) || WAYPT_HAS(wpt, speed))) {
                snprintf(obuf,sizeof(obuf),"GPVTG,%.3f,T,0,M,%.3f,N,%.3f,K",
                        WAYPT_HAS(wpt, course) ? (wpt->course):(0),     
-                       WAYPT_HAS(wpt, speed) ? (wpt->speed / kts2mps):(0),
-                       WAYPT_HAS(wpt, speed) ? (wpt->speed / kmh2mps):(0) );
+                       WAYPT_HAS(wpt, speed) ? MPS_TO_KNOTS(wpt->speed):(0),
+                       WAYPT_HAS(wpt, speed) ? MPS_TO_KPH(wpt->speed):(0) );
 
                cksum = nmea_cksum(obuf);
                gbfprintf(file_out, "$%s*%02X\n", obuf, cksum);
index 1c8d2a878881a685ad4e71c5dbc487ed538beb7f..5ba41390e2677e223b38252f777995fb3746e443 100644 (file)
-$FRSPD,0.04*65\r
+$FRSPD,0.02*63\r
 $FRWPT,3003.73100,N,09136.62100,W,1.0,250502,170621*63\r
-$FRSPD,1.24*66\r
+$FRSPD,0.64*63\r
 $FRWPT,3003.76700,N,09136.63400,W,0.0,250502,170955*69\r
-$FRSPD,6.70*60\r
+$FRSPD,3.45*63\r
 $FRWPT,3003.76200,N,09136.49600,W,0.0,250502,171200*6C\r
-$FRSPD,7.43*61\r
+$FRSPD,3.82*68\r
 $FRWPT,3003.74000,N,09136.44300,W,0.0,250502,171248*68\r
-$FRSPD,7.39*6C\r
+$FRSPD,3.80*6A\r
 $FRWPT,3003.69200,N,09136.31700,W,0.0,250502,171441*6F\r
-$FRSPD,14.61*53\r
+$FRSPD,7.52*61\r
 $FRWPT,3003.58700,N,09135.96400,W,0.0,250502,171716*64\r
-$FRSPD,43.13*54\r
+$FRSPD,22.19*59\r
 $FRWPT,3003.46800,N,09135.80100,W,0.0,250502,171746*63\r
-$FRSPD,35.48*5B\r
+$FRSPD,18.25*5F\r
 $FRWPT,3003.32300,N,09135.69400,W,0.0,250502,171820*66\r
-$FRSPD,25.45*57\r
+$FRSPD,13.09*5A\r
 $FRWPT,3003.23300,N,09135.55700,W,0.0,250502,171901*68\r
-$FRSPD,19.37*5D\r
+$FRSPD,9.96*67\r
 $FRWPT,3002.98400,N,09135.38500,W,0.0,250502,172046*6E\r
-$FRSPD,12.72*57\r
+$FRSPD,6.54*66\r
 $FRWPT,3002.94100,N,09135.39300,W,0.0,250502,172110*62\r
-$FRSPD,27.18*5D\r
+$FRSPD,13.98*52\r
 $FRWPT,3002.92800,N,09135.57600,W,0.0,250502,172151*65\r
-$FRSPD,38.06*5C\r
+$FRSPD,19.58*54\r
 $FRWPT,3002.77400,N,09135.78700,W,0.0,250502,172235*6F\r
-$FRSPD,26.63*50\r
+$FRSPD,13.70*54\r
 $FRWPT,3002.73100,N,09135.92300,W,0.0,250502,172308*61\r
-$FRSPD,0.38*6A\r
+$FRSPD,0.20*63\r
 $FRWPT,3002.83800,N,09136.01600,W,0.0,250502,180423*68\r
-$FRSPD,2.60*65\r
+$FRSPD,1.34*67\r
 $FRWPT,3002.82000,N,09135.97800,W,2.0,250502,180604*66\r
-$FRSPD,3.97*6C\r
+$FRSPD,2.04*67\r
 $FRWPT,3002.78600,N,09135.96800,W,0.0,250502,180706*65\r
-$FRSPD,2.95*6F\r
+$FRSPD,1.52*67\r
 $FRWPT,3002.77200,N,09135.93700,W,1.0,250502,180818*65\r
-$FRSPD,3.68*6C\r
+$FRSPD,1.89*61\r
 $FRWPT,3002.78200,N,09135.86400,W,0.0,250502,181020*6E\r
-$FRSPD,4.21*66\r
+$FRSPD,2.17*65\r
 $FRWPT,3002.78100,N,09135.83000,W,0.0,250502,181109*66\r
-$FRSPD,5.13*66\r
+$FRSPD,2.64*61\r
 $FRWPT,3002.80700,N,09135.78000,W,0.0,250502,181218*60\r
-$FRSPD,4.02*67\r
+$FRSPD,2.07*64\r
 $FRWPT,3002.84700,N,09135.71200,W,0.0,250502,181422*60\r
-$FRSPD,5.14*61\r
+$FRSPD,2.64*61\r
 $FRWPT,3002.86800,N,09135.68600,W,2.0,250502,181504*66\r
-$FRSPD,4.47*66\r
+$FRSPD,2.30*60\r
 $FRWPT,3002.89500,N,09135.64500,W,1.0,250502,181614*6A\r
-$FRSPD,4.46*67\r
+$FRSPD,2.29*68\r
 $FRWPT,3002.92100,N,09135.62800,W,1.0,250502,181701*6A\r
-$FRSPD,4.26*61\r
+$FRSPD,2.19*6B\r
 $FRWPT,3002.96100,N,09135.63100,W,0.0,250502,181807*6E\r
-$FRSPD,3.94*6F\r
+$FRSPD,2.03*60\r
 $FRWPT,3003.01900,N,09135.63900,W,2.0,250502,181951*61\r
-$FRSPD,4.21*66\r
+$FRSPD,2.17*65\r
 $FRWPT,3003.04700,N,09135.64700,W,0.0,250502,182039*65\r
-$FRSPD,4.67*64\r
+$FRSPD,2.40*67\r
 $FRWPT,3003.07400,N,09135.66200,W,0.0,250502,182124*6F\r
-$FRSPD,4.50*60\r
+$FRSPD,2.31*61\r
 $FRWPT,3003.10800,N,09135.66200,W,0.0,250502,182217*66\r
-$FRSPD,3.39*68\r
+$FRSPD,1.74*63\r
 $FRWPT,3003.13300,N,09135.68000,W,0.0,250502,182318*6C\r
-$FRSPD,4.26*61\r
+$FRSPD,2.19*6B\r
 $FRWPT,3003.18100,N,09135.68100,W,0.0,250502,182437*6E\r
-$FRSPD,3.71*64\r
+$FRSPD,1.91*68\r
 $FRWPT,3003.29200,N,09135.71200,W,6.0,250502,182813*68\r
-$FRSPD,2.40*67\r
+$FRSPD,1.23*61\r
 $FRWPT,3003.22400,N,09135.69600,W,2.0,250502,183136*63\r
-$FRSPD,2.97*6D\r
+$FRSPD,1.53*66\r
 $FRWPT,3003.19100,N,09135.68700,W,0.0,250502,183256*69\r
-$FRSPD,3.52*65\r
+$FRSPD,1.81*69\r
 $FRWPT,3003.15800,N,09135.69000,W,0.0,250502,183402*6D\r
-$FRSPD,1.91*68\r
+$FRSPD,0.98*60\r
 $FRWPT,3003.14700,N,09135.72600,W,0.0,250502,183603*6C\r
-$FRSPD,4.33*65\r
+$FRSPD,2.23*62\r
 $FRWPT,3003.14900,N,09135.75800,W,0.0,250502,183648*64\r
-$FRSPD,4.77*65\r
+$FRSPD,2.46*61\r
 $FRWPT,3003.15900,N,09135.80700,W,1.0,250502,183752*6B\r
-$FRSPD,5.10*65\r
+$FRSPD,2.62*67\r
 $FRWPT,3003.18800,N,09135.87100,W,0.0,250502,183918*67\r
-$FRSPD,3.64*60\r
+$FRSPD,1.87*6F\r
 $FRWPT,3003.21700,N,09135.87800,W,0.0,250502,184015*68\r
-$FRSPD,2.35*65\r
+$FRSPD,1.21*63\r
 $FRWPT,3003.23800,N,09135.86600,W,6.0,250502,184125*6E\r
-$FRSPD,2.60*65\r
+$FRSPD,1.34*67\r
 $FRWPT,3003.21700,N,09135.88500,W,0.0,250502,184237*68\r
-$FRSPD,2.21*60\r
+$FRSPD,1.14*65\r
 $FRWPT,3003.19200,N,09135.87500,W,0.0,250502,184401*6A\r
-$FRSPD,1.94*6D\r
+$FRSPD,1.00*60\r
 $FRWPT,3003.16900,N,09135.85100,W,0.0,250502,184553*6E\r
-$FRSPD,3.89*63\r
+$FRSPD,2.00*63\r
 $FRWPT,3003.15400,N,09135.81600,W,0.0,250502,184654*67\r
-$FRSPD,4.31*67\r
+$FRSPD,2.22*63\r
 $FRWPT,3003.14000,N,09135.78600,W,0.0,250502,184742*62\r
-$FRSPD,4.67*64\r
+$FRSPD,2.40*67\r
 $FRWPT,3003.13500,N,09135.74100,W,0.0,250502,184841*67\r
-$FRSPD,3.42*64\r
+$FRSPD,1.76*61\r
 $FRWPT,3003.13300,N,09135.70100,W,0.0,250502,184952*66\r
-$FRSPD,3.18*6B\r
+$FRSPD,1.64*62\r
 $FRWPT,3003.11300,N,09135.68200,W,0.0,250502,185049*6C\r
-$FRSPD,4.32*64\r
+$FRSPD,2.22*63\r
 $FRWPT,3003.06300,N,09135.66400,W,0.0,250502,185214*68\r
-$FRSPD,5.05*61\r
+$FRSPD,2.60*65\r
 $FRWPT,3003.03400,N,09135.65400,W,0.0,250502,185256*6F\r
-$FRSPD,4.01*64\r
+$FRSPD,2.06*65\r
 $FRWPT,3003.01100,N,09135.64600,W,0.0,250502,185338*62\r
-$FRSPD,5.12*67\r
+$FRSPD,2.64*61\r
 $FRWPT,3002.94600,N,09135.62300,W,0.0,250502,185511*66\r
-$FRSPD,4.14*60\r
+$FRSPD,2.13*61\r
 $FRWPT,3002.90700,N,09135.65500,W,0.0,250502,185632*60\r
-$FRSPD,4.59*69\r
+$FRSPD,2.36*66\r
 $FRWPT,3002.88500,N,09135.68500,W,0.0,250502,185724*60\r
-$FRSPD,4.66*65\r
+$FRSPD,2.39*69\r
 $FRWPT,3002.85000,N,09135.72700,W,7.0,250502,185840*6B\r
-$FRSPD,5.64*66\r
+$FRSPD,2.90*6A\r
 $FRWPT,3002.82400,N,09135.76000,W,0.0,250502,185928*63\r
-$FRSPD,5.27*61\r
+$FRSPD,2.71*65\r
 $FRWPT,3002.79800,N,09135.79600,W,0.0,250502,190022*65\r
-$FRSPD,5.00*64\r
+$FRSPD,2.57*61\r
 $FRWPT,3002.78400,N,09135.85900,W,0.0,250502,190141*60\r
-$FRSPD,4.56*66\r
+$FRSPD,2.35*65\r
 $FRWPT,3002.77400,N,09135.90800,W,0.0,250502,190248*60\r
-$FRSPD,3.37*66\r
+$FRSPD,1.73*64\r
 $FRWPT,3002.77900,N,09135.93800,W,0.0,250502,190343*64\r
-$FRSPD,3.45*63\r
+$FRSPD,1.77*60\r
 $FRWPT,3002.80700,N,09135.95700,W,0.0,250502,190449*66\r
-$FRSPD,2.98*62\r
+$FRSPD,1.53*66\r
 $FRWPT,3002.82800,N,09135.98000,W,0.0,250502,190557*6F\r
index a0d29072670834eadd3700c891c1bf408eecb621..6d953177f3e2c396356a46dda60eb17f41f99ef7 100644 (file)
--- a/vitosmt.c
+++ b/vitosmt.c
@@ -36,9 +36,6 @@ const long                            vitosmt_version                 =2;
 const long                             vitosmt_subversion              =1000;
 const size_t                   vitosmt_headersize              =24;
 const size_t                   vitosmt_datasize                =64;
-const double mile2km   =1.609344;                              /* mile/h to kilometer/h */
-const double kts2mps   =0.5144444444444444444; /* knots to m/s */
-const double mph2mps   =0.447039259;                   /* mile/h to m/s     */
 
 static unsigned long
 ReadLong(FILE * f)
@@ -195,7 +192,7 @@ vitosmt_read(void)
                wpt_tmp->shortname      =xcalloc(16,1);
                snprintf(wpt_tmp->shortname, 15 , "WP%04d", ++serial);
 
-               WAYPT_SET(wpt_tmp, speed, speed*kts2mps); /* meters per second */
+               WAYPT_SET(wpt_tmp, speed, KNOTS_TO_MPS(speed)); /* meters per second */
                WAYPT_SET(wpt_tmp, course, course);
                wpt_tmp->pdop   = pdop;
 
@@ -294,7 +291,7 @@ vitosmt_waypt_pr(const waypoint *waypointp)
 
        /* speed */
        if (waypointp->speed>0) 
-               WriteDouble(&workbuffer[position], waypointp->speed / mph2mps );
+               WriteDouble(&workbuffer[position], MPS_TO_MPH(waypointp->speed));
        position += sizeof(double);
        
        /* course */